home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tex / macros / source / contrib / misc / relsize.sty < prev    next >
Text File  |  1995-03-09  |  6KB  |  125 lines

  1. % relsize.sty       1.0       Jan 10, 1995
  2.  
  3. % New LaTex2e version by Donald Arseneau
  4. % Original LaTex2.09 smaller.sty author: Bernie Cosell <cosell@WILMA.BBN.COM> 
  5.  
  6. % Relative font sizing in LaTeX
  7.  
  8. % commands are:
  9. % \relsize{n}  where n gives the number of steps to change the size by;
  10. %              n = -3 changes from \large to \footnotesize.
  11. % \smaller == \relsize{-1}
  12. % \larger  == \relsize{1}
  13. % \textsmaller{text}, \textlarger{text} - versions that take an argument
  14. % \mathsmaller{A}, \mathlarger{B}       - math versions 
  15. %   (The math versions are quite different from the text versions.)
  16.  
  17. % There are more instructions at the end of the file (after \endinput).
  18.  
  19. \ProvidesPackage{relsize}[1995/01/10 ver 1.0]
  20. \RequirePackage{exscale}
  21.  
  22. \DeclareRobustCommand\relsize[1]{%
  23. \ifmmode \@nomath\relsize\else
  24.  \@tempcnta % assign number representing current font size
  25.    \ifx\@currsize\normalsize 4\else   % funny order is to have most ...
  26.     \ifx\@currsize\small 3\else       % ...likely sizes checked first
  27.      \ifx\@currsize\footnotesize 2\else
  28.       \ifx\@currsize\large 5\else
  29.        \ifx\@currsize\Large 6\else
  30.         \ifx\@currsize\LARGE 7\else
  31.          \ifx\@currsize\scriptsize 1\else
  32.           \ifx\@currsize\tiny 0\else
  33.            \ifx\@currsize\huge 8\else
  34.             \ifx\@currsize\Huge 9\else
  35.              4% unknown state: use \normalsize as starting point
  36.  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
  37.  \advance\@tempcnta#1\relax %  Change the number by the given increment
  38.  \ifnum\@tempcnta<\z@ \@tempcnta\z@ \fi  % watch out for size underflow 
  39.  \ifcase\@tempcnta  % set new size based on altered number
  40.     \tiny \or \scriptsize \or \footnotesize \or \small \or \normalsize \or 
  41.     \large \or \Large \or \LARGE \or \huge \else \Huge \fi
  42. \fi
  43. }
  44.  
  45. \newcommand\larger{\relsize{+1}}
  46. \newcommand\smaller{\relsize{-1}}
  47. \newcommand\textlarger[1]{{\relsize{+1}#1}}
  48. \newcommand\textsmaller[1]{{\relsize{-1}#1}}
  49. \newcommand\mathsmaller[1]{\mathchoice{{\textstyle#1}}{{\scriptstyle#1}}%
  50.   {{\scriptscriptstyle#1}}{{\scriptscriptstyle#1}}}
  51. \newcommand\mathlarger[1]{\mathchoice{\mbox{\larger$\displaystyle#1\m@th$}}%
  52.   {{\displaystyle#1}}{{\textstyle#1}}{{\scriptstyle#1}}}
  53.  
  54.  
  55. \endinput
  56. ==========================================================
  57.  
  58. R E L S I Z E . S T Y           ver 1.0   Jan 1995
  59.  
  60. by Donald Arseneau,  asnd@reg.triumf.ca,  based on smaller.sty by
  61. Bernie Cosell, cosell@WILMA.BBN.COM.
  62.  
  63. It is frequently the case that something should be typeset somewhat larger
  64. or smaller than the surrounding text, whatever that size happens to be.
  65. Specifying such sizing commands explicitly makes it difficult to modify the
  66. font sizes of a document at a later time, and makes it hard to write macros
  67. that work at arbitrary sizes.  Relsize.sty defines several commands for LaTeX
  68. to set font sizes relative to the current size. 
  69.  
  70. To refresh your memory, the font sizing commands in LaTeX are, in order:
  71. \tiny, \scriptsize, \footnotesize, \small, \normalsize, \large, \Large,
  72. \LARGE, \huge, \Huge.  The main new command provided is \relsize, which 
  73. takes one (positive or negative) number as its argument; the number specifies
  74. how many increments by which to change the font size.  For example, if  
  75. {\relsize{-2} smaller}   appears in normal sized text, the word "smaller" 
  76. is printed in footnote sized type.  If the same command appears in a \Large
  77. section title, then "smaller" is printed in normal size. 
  78.  
  79. For convenience, there are the commands \smaller and \larger, which change
  80. the font size by one increment in the obvious direction.  \large{\larger big}
  81. prints "big" in \Large type.
  82.  
  83. All of the \relsize, \larger, and \smaller commands are "switches" just like
  84. the regular sizing commands.  That is, they do not take an argument, but they 
  85. change the size for all following text until the scope is ended by a closing 
  86. brace.  There are alternate versions called \textlarger and \textsmaller that 
  87. take some text as an argument and apply the size change to only that text:
  88. \textlarger{big}.
  89.  
  90. All of the commands described above are text commands; they cannot be used in
  91. math mode.  There are special \mathsmaller and \mathlarger commands provided, 
  92. but these do not use the same sizes that the text versions use.  Instead, 
  93. they step between the usual math "styles" which you can explicitly set
  94. using the commands \textstyle, \scriptstyle, and \scriptscriptstyle [see
  95. Lamport, 1st ed, p. 54].  The only time that the main font size is changed 
  96. is when you use \larger in some display-style math.  The sizes selected are:
  97.  
  98. Current style        \mathsmaller gives      \mathlarger gives
  99. ---------------      ------------------      ----------------------------
  100. displaystyle         \textstyle              \displaystyle in a \larger font
  101. textstyle            \scriptstyle            \displaystyle 
  102. scriptstyle          \scriptscriptstyle      \textstyle
  103. scriptscriptstyle    \scriptscriptstyle      \scriptstyle
  104.  
  105. For example, try $\frac{\mathlarger{E}}{E}$.  Note that, for most symbols,
  106. \displaystyle and \textstyle are the same size, so $N \mathlarger{N}$
  107. gives two identical N's, but \sum and \int do get bigger in displays:
  108. $\int\mathlarger{\int}$, and fractions are treated differently:
  109. $\frac{1}{2} \mathlarger{\frac{1}{2}}$.  As you might have guessed,
  110. \mathlarger and \mathsmaller should only be used in math mode.
  111.  
  112. Fine point:  The combination \relsize{n}\relsize{-n} is not guaranteed to 
  113. restore the current font size!  That is because the increment "n" may be
  114. enough to overflow the range of sizes.  Say you are in \huge text already,
  115. and you do \relsize{4}.  There is nothing bigger than \Huge so that is the
  116. size you get.  Then an ensuing \relsize{-4} will take four steps smaller
  117. and change the size to \large.  The math mode commands are even less 
  118. reversible: $\displaystyle\mathlarger{\mathsmaller{\sum_n}}$ prints the 
  119. summation in the text style of a larger font.  Ugh!
  120.  
  121. You should use grouping to undo relative size changes.  It is unsafe to
  122. counteract one change with an "equal" change in the opposite direction.
  123.  
  124. Donald Arseneau                         asnd@reg.triumf.ca
  125.